package com.petmarket.contract;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.v3.client.Client;
import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray;
import org.fisco.bcos.sdk.v3.codec.datatypes.Event;
import org.fisco.bcos.sdk.v3.codec.datatypes.Function;
import org.fisco.bcos.sdk.v3.codec.datatypes.Type;
import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference;
import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int256;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint32;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple5;
import org.fisco.bcos.sdk.v3.contract.Contract;
import org.fisco.bcos.sdk.v3.crypto.CryptoSuite;
import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback;
import org.fisco.bcos.sdk.v3.model.CryptoType;
import org.fisco.bcos.sdk.v3.model.TransactionReceipt;
import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.v3.transaction.manager.transactionv1.ProxySignTransactionManager;
import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class TransferContract extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b5060408051600480825260a08201909252600091816020015b60608152602001906001900390816200002a57905050905060405180604001604052806007815260200166189d5e595c925960ca1b8152508160008151811062000078576200007862000318565b6020026020010181905250604051806040016040528060088152602001671cd95b1b195c925960c21b81525081600181518110620000ba57620000ba62000318565b602002602001018190525060405180604001604052806006815260200165185b5bdd5b9d60d21b81525081600281518110620000fa57620000fa62000318565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b815250816003815181106200013e576200013e62000318565b6020026020010181905250600060405180606001604052806001808111156200016b576200016b6200032e565b8152602001604051806040016040528060028152602001611a5960f21b81525081526020018381525090506110026001600160a01b03166375b14eea6040518060400160405280600881526020016772745f7461626c6560c01b815250836040518363ffffffff1660e01b8152600401620001e892919062000394565b6020604051808303816000875af115801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e91906200045c565b50604080518082018252600881526772745f7461626c6560c01b6020820152905163f23f63c960e01b81526000916110029163f23f63c991620002749160040162000488565b602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b891906200049d565b90506001600160a01b038116620002ef5760405162461bcd60e51b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620004c89050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156200036c576020818501810151868301820152016200034e565b818111156200037f576000602083870101525b50601f01601f19169290920160200192915050565b604081526000620003a9604083018562000344565b602083820381850152845160028110620003d357634e487b7160e01b600052602160045260246000fd5b8083525080850151606082840152620003f0606084018262000344565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200044e57601f198583030187526200043b82855162000344565b968601969386019391506001016200041c565b509998505050505050505050565b6000602082840312156200046f57600080fd5b81518060030b81146200048157600080fd5b9392505050565b60208152600062000481602083018462000344565b600060208284031215620004b057600080fd5b81516001600160a01b03811681146200048157600080fd5b61215980620004d86000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063b2beeb9011610066578063b2beeb901461013c578063b7c288361461014f578063db5c2fab14610172578063eb18b48714610185578063f575cda01461019857600080fd5b8063428ffbbb146100a357806355f150f1146100cc5780638cc77e7e146100e2578063950579e8146101035780639608357f14610129575b600080fd5b6100b66100b13660046115d1565b6101c0565b6040516100c391906116b5565b60405180910390f35b6100d46104e3565b6040516100c39291906116cf565b6100f56100f0366004611802565b610585565b6040519081526020016100c3565b610116610111366004611910565b61069b565b60405160039190910b81526020016100c3565b6101166101373660046119a8565b6108f2565b61011661014a3660046115d1565b610ae6565b61016261015d366004611a65565b610d41565b6040516100c39493929190611a80565b6101166101803660046115d1565b610ed4565b610116610193366004611a65565b6111e6565b6101ab6101a63660046115d1565b61137f565b60405163ffffffff90911681526020016100c3565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b61020f6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816101ea5790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b8152600789900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015610295573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102bd9190810190611b33565b815250816000815181106102d3576102d3611b67565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600788900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015610350573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103789190810190611b33565b8152508160018151811061038e5761038e611b67565b602090810291909101015260008054604051632a92244160e01b81526001600160a01b0390911690632a922441906103cc9085908790600401611c07565b600060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104119190810190611d44565b9050600081516001600160401b0381111561042e5761042e6116f4565b60405190808252806020026020018201604052801561046157816020015b606081526020019060019003908161044c5790505b50905060005b81518110156104d85782818151811061048257610482611b67565b6020026020010151602001516000815181106104a0576104a0611b67565b60200260200101518282815181106104ba576104ba611b67565b602002602001018190525080806104d090611df4565b915050610467565b509695505050505050565b604080518082018252600881526772745f7461626c6560c01b6020820152905163b8764d3f60e01b815260609182916000916110029163b8764d3f9161052b91600401611e1d565b600060405180830381865afa158015610548573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105709190810190611e30565b90508060200151816040015192509250509091565b600060ff8416158061059a57508360ff166001145b6105a357600080fd5b60008460ff16600114156105b5575060015b600060405180606001604052808360018111156105d4576105d4611ad8565b815260208101879052604090810186905251633ad8a77560e11b8152909150600090611002906375b14eea90610610908b908690600401611f1f565b6020604051808303816000875af115801561062f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190611f82565b604051600382900b81529091507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf2109060200160405180910390a160030b979650505050505050565b60408051600380825260808201909252600091829190816020015b60408051808201909152606080825260208201528152602001906001900390816106b657505060408051608081018252600791810191825266189d5e595c925960ca1b606082015290815260208101879052815191925090829060009061071f5761071f611b67565b60200260200101819052506040518060400160405280604051806040016040528060088152602001671cd95b1b195c925960c21b8152508152602001858152508160018151811061077257610772611b67565b6020026020010181905250604051806040016040528060405180604001604052806006815260200165185b5bdd5b9d60d21b815250815260200184815250816002815181106107c3576107c3611b67565b60209081029190910101526000805460405163ecb6fef360e01b8152600789900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa158015610825573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261084d9190810190611b33565b846040518363ffffffff1660e01b815260040161086b929190612013565b6020604051808303816000875af115801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae9190611f82565b604051600382900b81529091507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a9060200160405180910390a19695505050505050565b604080518082019182905263ecb6fef360e01b909152600786900b604482015260009081908061100f63ecb6fef360648301600060405180830381865afa158015610941573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109699190810190611b33565b815260408051600480825260a0820190925260209092019190816020015b60608152602001906001900390816109875790505081525090508581602001516000815181106109b9576109b9611b67565b60200260200101819052508481602001516001815181106109dc576109dc611b67565b60200260200101819052508381602001516002815181106109ff576109ff611b67565b6020026020010181905250828160200151600381518110610a2257610a22611b67565b602090810291909101015260008054604051635c6e105f60e01b81526001600160a01b0390911690635c6e105f90610a5e908590600401612038565b6020604051808303816000875af1158015610a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa19190611f82565b604051600382900b81529091507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce9060200160405180910390a1979650505050505050565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b610b3960408051606081019091528060008152","60200160608152602001606081525090565b815260200190600190039081610b145790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b8152600789900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015610bbf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610be79190810190611b33565b81525081600081518110610bfd57610bfd611b67565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600788900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ca29190810190611b33565b81525081600181518110610cb857610cb8611b67565b602090810291909101015260005460405163a726071760e01b81526001600160a01b039091169063a726071790610cf59084908690600401611c07565b6020604051808303816000875af1158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d389190611f82565b95945050505050565b6000805460405163ecb6fef360e01b8152600784900b6004820152606092839283928392916001600160a01b03169063fcd7e3c19061100f9063ecb6fef390602401600060405180830381865afa158015610da0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dc89190810190611b33565b6040518263ffffffff1660e01b8152600401610de49190611e1d565b600060405180830381865afa158015610e01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e299190810190612071565b905060608060608084602001515160041415610ec4578460200151600081518110610e5657610e56611b67565b602002602001015193508460200151600181518110610e7757610e77611b67565b602002602001015192508460200151600281518110610e9857610e98611b67565b602002602001015191508460200151600381518110610eb957610eb9611b67565b602002602001015190505b9299919850965090945092505050565b604080516001808252818301909252600091829190816020015b6040805180820190915260608082526020820152815260200190600190039081610eee57905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b81525081525081600081518110610f7c57610f7c611b67565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b610fdb6040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081610fb65790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b815260078a900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015611061573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110899190810190611b33565b8152508160008151811061109f5761109f611b67565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600789900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa15801561111c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111449190810190611b33565b8152508160018151811061115a5761115a611b67565b6020908102919091010152600054604051634c9260bf60e11b81526001600160a01b0390911690639924c17e90611199908490869088906004016120a5565b6020604051808303816000875af11580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190611f82565b9695505050505050565b604080516001808252818301909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161120057905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b8152508152508160008151811061128c5761128c611b67565b60209081029190910101526000805460405163ecb6fef360e01b8152600786900b60048201526001600160a01b03909116906341ffd75f9061100f9063ecb6fef390602401600060405180830381865afa1580156112ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113169190810190611b33565b846040518363ffffffff1660e01b8152600401611334929190612013565b6020604051808303816000875af1158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190611f82565b949350505050565b60408051600280825260608201909252600091829190816020015b6113bf6040805160608101909152806000815260200160608152602001606081525090565b81526020019060019003908161139a5790505060408051606081018252600081528151808301835260028152611a5960f21b602080830191909152820152815163ecb6fef360e01b8152600788900b6004820152929350919082019061100f9063ecb6fef390602401600060405180830381865afa158015611445573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261146d9190810190611b33565b8152508160008151811061148357611483611b67565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b602080830191909152830152805163ecb6fef360e01b8152600787900b600482015291019061100f9063ecb6fef390602401600060405180830381865afa158015611500573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115289190810190611b33565b8152508160018151811061153e5761153e611b67565b602090810291909101015260005460405163da46335f60e01b81526001600160a01b039091169063da46335f906115799084906004016120ea565b602060405180830381865afa158015611596573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137791906120fd565b8035600781900b81146115cc57600080fd5b919050565b600080604083850312156115e457600080fd5b6115ed836115ba565b91506115fb602084016115ba565b90509250929050565b60005b8381101561161f578181015183820152602001611607565b8381111561162e576000848401525b50505050565b6000815180845261164c816020860160208601611604565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156116a8578284038952611696848351611634565b9885019893509084019060010161167e565b5091979650505050505050565b6020815260006116c86020830184611660565b9392505050565b6040815260006116e26040830185611634565b8281036020840152610d388185611660565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561172c5761172c6116f4565b60405290565b604051601f8201601f191681016001600160401b038111828210171561175a5761175a6116f4565b604052919050565b60006001600160401b0382111561177b5761177b6116f4565b50601f01601f191660200190565b600082601f83011261179a57600080fd5b81356117ad6117a882611762565b611732565b8181528460208386010111156117c257600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156117f8576117f86116f4565b5060051b60200190565b6000806000806080858703121561181857600080fd5b84356001600160401b038082111561182f57600080fd5b61183b88838901611789565b9550602091508187013560ff8116811461185457600080fd5b945060408701358181111561186857600080fd5b61187489828a01611789565b94505060608701358181111561188957600080fd5b8701601f8101891361189a57600080fd5b80356118a86117a8826117df565b81815260059190911b8201840190848101908b8311156118c757600080fd5b8584015b838110156118ff578035868111156118e35760008081fd5b6118f18e8983890101611789565b8452509186019186016118cb565b50989b979a50959850505050505050565b6000806000806080858703121561192657600080fd5b61192f856115ba565b935060208501356001600160401b038082111561194b57600080fd5b61195788838901611789565b9450604087013591508082111561196d57600080fd5b61197988838901611789565b9350606087013591508082111561198f57600080fd5b5061199c87828801611789565b91505092959194509250565b600080600080600060a086880312156119c057600080fd5b6119c9866115ba565b945060208601356001600160401b03808211156119e557600080fd5b6119f189838a01611789565b95506040880135915080821115611a0757600080fd5b611a1389838a01611789565b94506060880135915080821115611a2957600080fd5b611a3589838a01611789565b93506080880135915080821115611a4b57600080fd5b50611a5888828901611789565b9150509295509295909350565b600060208284031215611a7757600080fd5b6116c8826115ba565b608081526000611a936080830187611634565b8281036020840152611aa58187611634565b90508281036040840152611ab98186611634565b90508281036060840152611acd8185611634565b979650505050505050565b634e487b7160e01b600052602160045260246000fd5b600082601f830112611aff57600080fd5b8151611b0d6117a882611762565b818152846020838601011115611b2257600080fd5b6113778260","20830160208701611604565b600060208284031215611b4557600080fd5b81516001600160401b03811115611b5b57600080fd5b61137784828501611aee565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156116a857828403895281516060815160098110611bbe57611bbe611ad8565b865281870151878701829052611bd682880182611634565b91505060408083015192508682038188015250611bf38183611634565b9a87019a9550505090840190600101611b9b565b606081526000611c1a6060830185611b7d565b90506116c86020830184805163ffffffff908116835260209182015116910152565b600082601f830112611c4d57600080fd5b81516020611c5d6117a8836117df565b82815260059290921b84018101918181019086841115611c7c57600080fd5b8286015b848110156104d85780516001600160401b03811115611c9f5760008081fd5b611cad8986838b0101611aee565b845250918301918301611c80565b600060408284031215611ccd57600080fd5b604051604081016001600160401b038282108183111715611cf057611cf06116f4565b816040528293508451915080821115611d0857600080fd5b611d1486838701611aee565b83526020850151915080821115611d2a57600080fd5b50611d3785828601611c3c565b6020830152505092915050565b60006020808385031215611d5757600080fd5b82516001600160401b0380821115611d6e57600080fd5b818501915085601f830112611d8257600080fd5b8151611d906117a8826117df565b81815260059190911b83018401908481019088831115611daf57600080fd5b8585015b83811015611de757805185811115611dcb5760008081fd5b611dd98b89838a0101611cbb565b845250918601918601611db3565b5098975050505050505050565b6000600019821415611e1657634e487b7160e01b600052601160045260246000fd5b5060010190565b6020815260006116c86020830184611634565b600060208284031215611e4257600080fd5b81516001600160401b0380821115611e5957600080fd5b9083019060608286031215611e6d57600080fd5b611e7561170a565b825160028110611e8457600080fd5b8152602083015182811115611e9857600080fd5b611ea487828601611aee565b602083015250604083015182811115611ebc57600080fd5b611ec887828601611c3c565b60408301525095945050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156116a8578284038952611f0d848351611634565b98850198935090840190600101611ef5565b604081526000611f326040830185611634565b8281036020840152835160028110611f4c57611f4c611ad8565b80825250602084015160606020830152611f696060830182611634565b905060408501518282036040840152611acd8282611ed7565b600060208284031215611f9457600080fd5b81518060030b81146116c857600080fd5b600081518084526020808501808196508360051b8101915082860160005b858110156116a8578284038952815160408151818752611fe582880182611634565b91505086820151915085810387870152611fff8183611634565b9a87019a9550505090840190600101611fc3565b6040815260006120266040830185611634565b8281036020840152610d388185611fa5565b6020815260008251604060208401526120546060840182611634565b90506020840151601f19848303016040850152610d388282611ed7565b60006020828403121561208357600080fd5b81516001600160401b0381111561209957600080fd5b61137784828501611cbb565b6080815260006120b86080830186611b7d565b6120d86020840186805163ffffffff908116835260209182015116910152565b82810360608401526111dc8185611fa5565b6020815260006116c86020830184611b7d565b60006020828403121561210f57600080fd5b815163ffffffff811681146116c857600080fdfea26469706673582212207d4eda2c8807aeb35406d225a74284b041c12a48807e564f2382476692294d1464736f6c634300080b0033"};

    public static final String BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b5060408051600480825260a08201909252600091816020015b60608152602001906001900390816200002a57905050905060405180604001604052806007815260200166189d5e595c925960ca1b8152508160008151811062000078576200007862000319565b6020026020010181905250604051806040016040528060088152602001671cd95b1b195c925960c21b81525081600181518110620000ba57620000ba62000319565b602002602001018190525060405180604001604052806006815260200165185b5bdd5b9d60d21b81525081600281518110620000fa57620000fa62000319565b60200260200101819052506040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b815250816003815181106200013e576200013e62000319565b6020026020010181905250600060405180606001604052806001808111156200016b576200016b6200032f565b8152602001604051806040016040528060028152602001611a5960f21b81525081526020018381525090506110026001600160a01b031663f6d7201d6040518060400160405280600881526020016772745f7461626c6560c01b815250836040518363ffffffff1660e01b8152600401620001e892919062000395565b6020604051808303816000875af115801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e91906200045d565b50604080518082018252600881526772745f7461626c6560c01b602082015290516359a48b6560e01b8152600091611002916359a48b6591620002749160040162000489565b602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b891906200049e565b90506001600160a01b038116620002f057604051636381e58960e11b8152602060048201526000602482015260440160405180910390fd5b600080546001600160a01b0319166001600160a01b039290921691909117905550620004c99050565b63b95aa35560e01b600052603260045260246000fd5b63b95aa35560e01b600052602160045260246000fd5b6000815180845260005b818110156200036d576020818501810151868301820152016200034f565b8181111562000380576000602083870101525b50601f01601f19169290920160200192915050565b604081526000620003aa604083018562000345565b602083820381850152845160028110620003d45763b95aa35560e01b600052602160045260246000fd5b8083525080850151606082840152620003f1606084018262000345565b90506040860151838203604085015281935080518083528383019450838160051b840101848301925060005b828110156200044f57601f198583030187526200043c82855162000345565b968601969386019391506001016200041d565b509998505050505050505050565b6000602082840312156200047057600080fd5b81518060030b81146200048257600080fd5b9392505050565b60208152600062000482602083018462000345565b600060208284031215620004b157600080fd5b81516001600160a01b03811681146200048257600080fd5b61216580620004d96000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063753582a411610066578063753582a41461014a57806382083cca146101605780638af4602c14610173578063909fb8bd14610196578063d5c698f3146101a957600080fd5b80630575a21d146100a35780632682a07c146100c957806332694ee9146100f157806334e5f90914610117578063553eb68314610137575b600080fd5b6100b66100b13660046116c4565b6101bc565b6040519081526020015b60405180910390f35b6100dc6100d73660046117e9565b6102d2565b60405163ffffffff90911681526020016100c0565b6101046100ff36600461181c565b610515565b60405160039190910b81526020016100c0565b61012a6101253660046117e9565b61076c565b6040516100c09190611968565b610104610145366004611982565b610a8f565b610152610c83565b6040516100c0929190611a3f565b61010461016e3660046117e9565b610d25565b610186610181366004611a64565b610f80565b6040516100c09493929190611a7f565b6101046101a4366004611a64565b611113565b6101046101b73660046117e9565b6112a4565b600060ff841615806101d157508360ff166001145b6101da57600080fd5b60008460ff16600114156101ec575060015b6000604051806060016040528083600181111561020b5761020b611ad7565b81526020810187905260409081018690525163f6d7201d60e01b81529091506000906110029063f6d7201d90610247908b908690600401611b42565b6020604051808303816000875af1158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a9190611ba5565b604051600382900b81529091507f38411b2ef21b6826a8b9f48a1baa6b3388c3354ebdc5db749b35830ec581722d9060200160405180910390a160030b979650505050505050565b60408051600280825260608201909252600091829190816020015b6103126040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816102ed5790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b8152600788900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015610398573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103c09190810190611c0d565b815250816000815181106103d6576103d6611c41565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600787900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa158015610453573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047b9190810190611c0d565b8152508160018151811061049157610491611c41565b6020908102919091010152600054604051633a081ed360e11b81526001600160a01b03909116906374103da6906104cc908490600401611ce1565b602060405180830381865afa1580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d9190611cf4565b949350505050565b60408051600380825260808201909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161053057505060408051608081018252600791810191825266189d5e595c925960ca1b606082015290815260208101879052815191925090829060009061059957610599611c41565b60200260200101819052506040518060400160405280604051806040016040528060088152602001671cd95b1b195c925960c21b815250815260200185815250816001815181106105ec576105ec611c41565b6020026020010181905250604051806040016040528060405180604001604052806006815260200165185b5bdd5b9d60d21b8152508152602001848152508160028151811061063d5761063d611c41565b6020908102919091010152600080546040516361cd959d60e11b8152600789900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106c79190810190611c0d565b846040518363ffffffff1660e01b81526004016106e5929190611d88565b6020604051808303816000875af1158015610704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107289190611ba5565b604051600382900b81529091507fd72ab475a08df05fbd4f7f8cb4db1ad9dbdc26f54437fa6794acd97357779d2a9060200160405180910390a19695505050505050565b60408051808201825260008082526101f46020830152825160028082526060828101909552816020015b6107bb6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816107965790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b8152600789900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108699190810190611c0d565b8152508160008151811061087f5761087f611c41565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600788900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa1580156108fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109249190810190611c0d565b8152508160018151811061093a5761093a611c41565b60209081029190910101526000805460405163087c36d360e01b81526001600160a01b039091169063087c36d3906109789085908790600401611dad565b600060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109bd9190810190611eea565b9050600081516001600160401b038111156109da576109da6115b6565b604051908082528060200260200182016040528015610a0d57816020015b60608152602001906001900390816109f85790505b50905060005b8151811015610a8457828181518110610a2e57610a2e611c41565b602002602001015160200151600081518110610a4c57610a4c611c41565b6020026020010151828281518110610a6657610a66611c41565b60200260200101819052508080610a7c90611f9a565b915050610a13565b509695505050505050565b60408051808201918290526361cd959d60e11b909152600786900b604482015260009081908061100f63c39b2b3a60648301600060405180830381865afa158015610ade573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b069190810190611c0d565b815260408051600480825260a0820190925260209092019190816020015b6060","815260200190600190039081610b24579050508152509050858160200151600081518110610b5657610b56611c41565b6020026020010181905250848160200151600181518110610b7957610b79611c41565b6020026020010181905250838160200151600281518110610b9c57610b9c611c41565b6020026020010181905250828160200151600381518110610bbf57610bbf611c41565b6020908102919091010152600080546040516304c8b95360e41b81526001600160a01b0390911690634c8b953090610bfb908590600401611fc3565b6020604051808303816000875af1158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190611ba5565b604051600382900b81529091507fdfc533ec2b52797a1229dc2495dbd3f4948f7c4c982ec077ad9d80810ec5c1f99060200160405180910390a1979650505050505050565b604080518082018252600881526772745f7461626c6560c01b602082015290516361bb9b7160e11b815260609182916000916110029163c37736e291610ccb91600401611ffc565b600060405180830381865afa158015610ce8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d10919081019061200f565b90508060200151816040015192509250509091565b60408051808201825260008082526101f4602083015282516002808252606082019094529092839190816020015b610d786040805160608101909152806000815260200160608152602001606081525090565b815260200190600190039081610d535790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b8152600789900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015610dfe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e269190810190611c0d565b81525081600081518110610e3c57610e3c611c41565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600788900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa158015610eb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ee19190810190611c0d565b81525081600181518110610ef757610ef7611c41565b60209081029190910101526000546040516339c964e160e01b81526001600160a01b03909116906339c964e190610f349084908690600401611dad565b6020604051808303816000875af1158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f779190611ba5565b95945050505050565b600080546040516361cd959d60e11b8152600784900b6004820152606092839283928392916001600160a01b031690635b325d789061100f9063c39b2b3a90602401600060405180830381865afa158015610fdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110079190810190611c0d565b6040518263ffffffff1660e01b81526004016110239190611ffc565b600060405180830381865afa158015611040573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261106891908101906120b6565b90506060806060808460200151516004141561110357846020015160008151811061109557611095611c41565b6020026020010151935084602001516001815181106110b6576110b6611c41565b6020026020010151925084602001516002815181106110d7576110d7611c41565b6020026020010151915084602001516003815181106110f8576110f8611c41565b602002602001015190505b9299919850965090945092505050565b604080516001808252818301909252600091829190816020015b604080518082019091526060808252602082015281526020019060019003908161112d57905050905060405180604001604052806040518060400160405280600a8152602001691a5cd7d9195b195d195960b21b8152508152602001604051806040016040528060018152602001603160f81b815250815250816000815181106111b9576111b9611c41565b6020908102919091010152600080546040516361cd959d60e11b8152600786900b60048201526001600160a01b03909116906301fa804c9061100f9063c39b2b3a90602401600060405180830381865afa15801561121b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112439190810190611c0d565b846040518363ffffffff1660e01b8152600401611261929190611d88565b6020604051808303816000875af1158015611280573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d9190611ba5565b604080516001808252818301909252600091829190816020015b60408051808201909152606080825260208201528152602001906001900390816112be57905050905060405180604001604052806040518060400160405280600681526020016573746174757360d01b8152508152602001604051806040016040528060078152602001661d5c19185d195960ca1b8152508152508160008151811061134c5761134c611c41565b60209081029190910181019190915260408051808201825260008082526101f4828501528251600280825260608201909452919390929082015b6113ab6040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816113865790505060408051606081018252600081528151808301835260028152611a5960f21b60208083019190915282015281516361cd959d60e11b815260078a900b6004820152929350919082019061100f9063c39b2b3a90602401600060405180830381865afa158015611431573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114599190810190611c0d565b8152508160008151811061146f5761146f611c41565b60209081029190910101526040805160608101909152806003815260408051808201825260028152611a5960f21b60208083019190915283015280516361cd959d60e11b8152600789900b600482015291019061100f9063c39b2b3a90602401600060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115149190810190611c0d565b8152508160018151811061152a5761152a611c41565b6020908102919091010152600054604051630341b28360e01b81526001600160a01b0390911690630341b28390611569908490869088906004016120ea565b6020604051808303816000875af1158015611588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ac9190611ba5565b9695505050505050565b63b95aa35560e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156115ee576115ee6115b6565b60405290565b604051601f8201601f191681016001600160401b038111828210171561161c5761161c6115b6565b604052919050565b60006001600160401b0382111561163d5761163d6115b6565b50601f01601f191660200190565b600082601f83011261165c57600080fd5b813561166f61166a82611624565b6115f4565b81815284602083860101111561168457600080fd5b816020850160208301376000918101602001919091529392505050565b60006001600160401b038211156116ba576116ba6115b6565b5060051b60200190565b600080600080608085870312156116da57600080fd5b84356001600160401b03808211156116f157600080fd5b6116fd8883890161164b565b9550602091508187013560ff8116811461171657600080fd5b945060408701358181111561172a57600080fd5b61173689828a0161164b565b94505060608701358181111561174b57600080fd5b8701601f8101891361175c57600080fd5b803561176a61166a826116a1565b81815260059190911b8201840190848101908b83111561178957600080fd5b8584015b838110156117c1578035868111156117a55760008081fd5b6117b38e898389010161164b565b84525091860191860161178d565b50989b979a50959850505050505050565b8035600781900b81146117e457600080fd5b919050565b600080604083850312156117fc57600080fd5b611805836117d2565b9150611813602084016117d2565b90509250929050565b6000806000806080858703121561183257600080fd5b61183b856117d2565b935060208501356001600160401b038082111561185757600080fd5b6118638883890161164b565b9450604087013591508082111561187957600080fd5b6118858883890161164b565b9350606087013591508082111561189b57600080fd5b506118a88782880161164b565b91505092959194509250565b60005b838110156118cf5781810151838201526020016118b7565b838111156118de576000848401525b50505050565b600081518084526118fc8160208601602086016118b4565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561195b57601f198684030189526119498383516118e4565b9884019892509083019060010161192d565b5090979650505050505050565b60208152600061197b6020830184611910565b9392505050565b600080600080600060a0868803121561199a57600080fd5b6119a3866117d2565b945060208601356001600160401b03808211156119bf57600080fd5b6119cb89838a0161164b565b955060408801359150808211156119e157600080fd5b6119ed89838a0161164b565b94506060880135915080821115611a0357600080fd5b611a0f89838a0161164b565b93506080880135915080821115611a2557600080fd5b50611a328882890161164b565b9150509295509295909350565b604081526000611a5260408301856118e4565b8281036020840152610f778185611910565b600060208284031215611a7657600080fd5b61197b826117d2565b608081526000611a9260808301876118e4565b8281036020840152611aa481876118e4565b90508281036040840152611ab881866118e4565b90508281036060840152611acc81856118e4565b979650505050505050565b63b95aa35560e01b600052602160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b85811015611b35578284038952611b238483516118e4565b988501","98935090840190600101611b0b565b5091979650505050505050565b604081526000611b5560408301856118e4565b8281036020840152835160028110611b6f57611b6f611ad7565b80825250602084015160606020830152611b8c60608301826118e4565b905060408501518282036040840152611acc8282611aed565b600060208284031215611bb757600080fd5b81518060030b811461197b57600080fd5b600082601f830112611bd957600080fd5b8151611be761166a82611624565b818152846020838601011115611bfc57600080fd5b61050d8260208301602087016118b4565b600060208284031215611c1f57600080fd5b81516001600160401b03811115611c3557600080fd5b61050d84828501611bc8565b63b95aa35560e01b600052603260045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b85811015611b3557828403895281516060815160098110611c9857611c98611ad7565b865281870151878701829052611cb0828801826118e4565b91505060408083015192508682038188015250611ccd81836118e4565b9a87019a9550505090840190600101611c75565b60208152600061197b6020830184611c57565b600060208284031215611d0657600080fd5b815163ffffffff8116811461197b57600080fd5b600081518084526020808501808196508360051b8101915082860160005b85811015611b35578284038952815160408151818752611d5a828801826118e4565b91505086820151915085810387870152611d7481836118e4565b9a87019a9550505090840190600101611d38565b604081526000611d9b60408301856118e4565b8281036020840152610f778185611d1a565b606081526000611dc06060830185611c57565b905061197b6020830184805163ffffffff908116835260209182015116910152565b600082601f830112611df357600080fd5b81516020611e0361166a836116a1565b82815260059290921b84018101918181019086841115611e2257600080fd5b8286015b84811015610a845780516001600160401b03811115611e455760008081fd5b611e538986838b0101611bc8565b845250918301918301611e26565b600060408284031215611e7357600080fd5b604051604081016001600160401b038282108183111715611e9657611e966115b6565b816040528293508451915080821115611eae57600080fd5b611eba86838701611bc8565b83526020850151915080821115611ed057600080fd5b50611edd85828601611de2565b6020830152505092915050565b60006020808385031215611efd57600080fd5b82516001600160401b0380821115611f1457600080fd5b818501915085601f830112611f2857600080fd5b8151611f3661166a826116a1565b81815260059190911b83018401908481019088831115611f5557600080fd5b8585015b83811015611f8d57805185811115611f715760008081fd5b611f7f8b89838a0101611e61565b845250918601918601611f59565b5098975050505050505050565b6000600019821415611fbc5763b95aa35560e01b600052601160045260246000fd5b5060010190565b602081526000825160406020840152611fdf60608401826118e4565b90506020840151601f19848303016040850152610f778282611aed565b60208152600061197b60208301846118e4565b60006020828403121561202157600080fd5b81516001600160401b038082111561203857600080fd5b908301906060828603121561204c57600080fd5b6120546115cc565b82516002811061206357600080fd5b815260208301518281111561207757600080fd5b61208387828601611bc8565b60208301525060408301518281111561209b57600080fd5b6120a787828601611de2565b60408301525095945050505050565b6000602082840312156120c857600080fd5b81516001600160401b038111156120de57600080fd5b61050d84828501611e61565b6080815260006120fd6080830186611c57565b61211d6020840186805163ffffffff908116835260209182015116910152565b82810360608401526115ac8185611d1a56fea2646970667358221220b20dea11c5e3deca18859dc4797c22966e17aa6ca4ebf6e0cd27f2c6024d74f564736f6c634300080b0033"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"selector\":[4118138272,646094972],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"string\",\"name\":\"tableName\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"keyOrder\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"createTable\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"selector\":[2361884286,91595293],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[],\"name\":\"desc\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[1441878257,1966441124],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"buyerId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"sellerId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"isDeleted\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2517120383,1430173315],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2998856592,2181577930],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3944264839,2426386621],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"selector\":[1116732347,887486729],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"selector\":[3082979382,2331271212],\"stateMutability\":\"view\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"id\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"buyerId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"sellerId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"amount\",\"type\":\"string\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[2500164072,845762281],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"conflictFields\":[{\"kind\":0}],\"inputs\":[{\"internalType\":\"int64\",\"name\":\"idLow\",\"type\":\"int64\"},{\"internalType\":\"int64\",\"name\":\"idHigh\",\"type\":\"int64\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"selector\":[3680251819,3586562291],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.v3.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_COUNT = "count";

    public static final String FUNC_CREATETABLE = "createTable";

    public static final String FUNC_DESC = "desc";

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_REMOVE = "remove";

    public static final String FUNC_SELECT = "select";

    public static final String FUNC_UPDATE = "update";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    protected TransferContract(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
        this.transactionManager = new ProxySignTransactionManager(client);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public static String getABI() {
        return ABI;
    }

    public List<CreateResultEventResponse> getCreateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeCreateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeInsertResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeRemoveResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(
            TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(BigInteger fromBlock, BigInteger toBlock,
            List<String> otherTopics, EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,otherTopics,fromBlock,toBlock,callback);
    }

    public void subscribeUpdateResultEvent(EventSubCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(topic0,callback);
    }

    public BigInteger count(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return executeCallWithSingleValueReturn(function, BigInteger.class);
    }

    public Function getMethodCountRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_COUNT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint32>() {}));
        return function;
    }

    public TransactionReceipt createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodCreateTableRawFunction(String tableName, BigInteger keyOrder,
            String key, List<String> fields) throws ContractException {
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        return function;
    }

    public String getSignedTransactionForCreateTable(String tableName, BigInteger keyOrder,
            String key, List<String> fields) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String createTable(String tableName, BigInteger keyOrder, String key,
            List<String> fields, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_CREATETABLE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(tableName), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint8(keyOrder), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(key), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray<org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String>(
                        org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class,
                        org.fisco.bcos.sdk.v3.codec.Utils.typeMap(fields, org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String.class))), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple4<String, BigInteger, String, List<String>> getCreateTableInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Uint8>() {}, new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, BigInteger, String, List<String>>(

                (String) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                convertToNative((List<Utf8String>) results.get(3).getValue())
                );
    }

    public Tuple1<BigInteger> getCreateTableOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_CREATETABLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple2<String, List<String>> desc() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple2<String, List<String>>(
                (String) results.get(0).getValue(), 
                convertToNative((List<Utf8String>) results.get(1).getValue()));
    }

    public Function getMethodDescRawFunction() throws ContractException {
        final Function function = new Function(FUNC_DESC, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<DynamicArray<Utf8String>>() {}));
        return function;
    }

    public TransactionReceipt insert(BigInteger id, String buyerId, String sellerId, String amount,
            String isDeleted) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodInsertRawFunction(BigInteger id, String buyerId, String sellerId,
            String amount, String isDeleted) throws ContractException {
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForInsert(BigInteger id, String buyerId, String sellerId,
            String amount, String isDeleted) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String insert(BigInteger id, String buyerId, String sellerId, String amount,
            String isDeleted, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(isDeleted)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple5<BigInteger, String, String, String, String> getInsertInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple5<BigInteger, String, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue(), 
                (String) results.get(4).getValue()
                );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getRemoveInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt remove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodRemoveRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForRemove(BigInteger id) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String remove(BigInteger id, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REMOVE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple1<BigInteger> getRemoveInt64Input(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Tuple1<BigInteger> getRemoveInt64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REMOVE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public List select(BigInteger idLow, BigInteger idHigh) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> result = (List<Type>) executeCallWithSingleValueReturn(function, List.class);
        return convertToNative(result);
    }

    public Function getMethodSelectRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {}));
        return function;
    }

    public Tuple4<String, String, String, String> select(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple4<String, String, String, String>(
                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue());
    }

    public Function getMethodSelectRawFunction(BigInteger id) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        return function;
    }

    public TransactionReceipt update(BigInteger id, String buyerId, String sellerId,
            String amount) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger id, String buyerId, String sellerId,
            String amount) throws ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger id, String buyerId, String sellerId,
            String amount) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger id, String buyerId, String sellerId, String amount,
            TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(id), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(buyerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(sellerId), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String(amount)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple4<BigInteger, String, String, String> getUpdateInt64StringStringStringInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<BigInteger, String, String, String>(

                (BigInteger) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (String) results.get(2).getValue(), 
                (String) results.get(3).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64StringStringStringOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt update(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return executeTransaction(function);
    }

    public Function getMethodUpdateRawFunction(BigInteger idLow, BigInteger idHigh) throws
            ContractException {
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        return function;
    }

    public String getSignedTransactionForUpdate(BigInteger idLow, BigInteger idHigh) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return createSignedTransaction(function);
    }

    public String update(BigInteger idLow, BigInteger idHigh, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_UPDATE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idLow), 
                new org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int64(idHigh)), 
                Collections.<TypeReference<?>>emptyList(), 0);
        return asyncExecuteTransaction(function, callback);
    }

    public Tuple2<BigInteger, BigInteger> getUpdateInt64Int64Input(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int64>() {}, new TypeReference<Int64>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<BigInteger, BigInteger>(

                (BigInteger) results.get(0).getValue(), 
                (BigInteger) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getUpdateInt64Int64Output(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_UPDATE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int32>() {}));
        List<Type> results = this.functionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public static TransferContract load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new TransferContract(contractAddress, client, credential);
    }

    public static TransferContract deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(TransferContract.class, client, credential, getBinary(client.getCryptoSuite()), getABI(), null, null);
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }
}
